package com.fyyg.common.converter;

import com.fyyg.common.page.PageData;
import com.fyyg.common.page.PageParam;

import java.util.List;

public interface IBaseConverter {

	/**
	 * 将视图层对象转换成实体对象
	 * @param vo
	 * @param clazz
	 * @param <M>
	 * @param <V>
     * @return
     */
	<M, V> M convert2Model(V vo, Class<M> clazz);

	/**
	 *将实体对象转换成视图层对象
	 * @param model
	 * @param clazz
	 * @param <M>
	 * @param <V>
     * @return
     */
	<M, V> V convert2Vo(M model, Class<V> clazz);

	/**
	 * 将实体数据对象转换成视图对象
	 * @param m
	 * @param clazz
	 * @param <M>
	 * @param <V>
     * @return
     */
	<M, V> List<V> convert2ListData(List<M> m, Class<V> clazz);

	/**
	 * 转换查询参数
	 * @param page
	 * @param clazz
	 * @param <M>
	 * @param <V>
     * @return
     */
	<M, V> PageParam<M> convert2PageParam(PageParam<V> page, Class<M> clazz);

	/**
	 * 转换成视图对象
	 * @param m
	 * @param clazz
	 * @param <M>
	 * @param <V>
     * @return
     */
	<M, V> PageData<V> convert2PageData(PageData<M> m, Class<V> clazz);
	
}
